home *** CD-ROM | disk | FTP | other *** search
/ Aminet 21 / Aminet 21 (1997)(GTI - Schatztruhe)[!][Oct 1997].iso / Aminet / mus / midi / MusicXRexxMacs.lha / macros / ECHO.mxe < prev    next >
Text File  |  1997-02-11  |  3KB  |  161 lines

  1. /*   ECHO   */
  2. /* © Dick Doyle */
  3.  
  4.  
  5.  
  6. options results
  7. MXCOLUMN 1
  8.  
  9. MXSLIDER         'Delay Amount ,0,768,0'
  10. MXLABEL ''
  11. MXLABEL            'NOTE VALUES'
  12. MXLABEL      '192 = ¼ note'   
  13. MXLABEL      '384 = ½ note'   
  14. MXLABEL      '576 = ¾ note'   
  15. MXLABEL      '768 = 1 note' 
  16.  
  17. MXCOLUMN 2
  18. MXSLIDER "Nº of Repeats,1,99,1"
  19. MXLABEL ''
  20.  
  21. MXLABEL 'ATTACK VELOCITY SLOPE'
  22. MXLABEL ''
  23. MXRADIO 'Falling,Ascending,Level'
  24. MXREQUEST "ECHO,YES"
  25. if result == 0 then exit
  26. MXPOINTER "sleepy"  
  27.  
  28. MXVALUE 8
  29. times = result
  30. MXVALUE 1
  31. z = result
  32. MXVALUE 12
  33. i = result
  34.  
  35. if i = 0 then
  36. SIGNAL FAL
  37.  
  38. if i = 1 then
  39. SIGNAL ASC
  40.  
  41. if i = 2 then
  42. SIGNAL LEV
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50. FAL:    
  51. GETBARDATA
  52. if BARDATA.SELECT == 'NONE' then do
  53.     MXREPORT "You must select some notes!"
  54.     exit
  55.     end
  56. BEGINSCAN 'selected'
  57.  
  58. if result ~= 0 then do forever        
  59.   
  60. NEXTEVENT                
  61.   if result == 0 then break
  62.  
  63. V = (EVENT.ATTACK - 1)/times
  64. if EVENT.TYPE == 'NOTE' then 
  65. do i = 1 to times     
  66. EVENT.START.CLOCKS = EVENT.START.CLOCKS + z
  67. EVENT.STOP.CLOCKS = EVENT.STOP.CLOCKS + z
  68.          EVENT.ATTACK = (EVENT.ATTACK - V)
  69.  
  70. ADDEVENT
  71. if EVENT.START.CLOCKS > BARDATA.MEASURE then do
  72. EVENT.START.BARS = EVENT.START.BARS + 1
  73. EVENT.START.CLOCKS = EVENT.START.CLOCKS - BARDATA.MEASURE
  74. if EVENT.STOP.CLOCKS > BARDATA.MEASURE then do
  75. EVENT.STOP.BARS = EVENT.STOP.BARS + 1
  76. EVENT.STOP.CLOCKS = EVENT.STOP.CLOCKS - BARDATA.MEASURE
  77. end
  78. END
  79. end
  80. end
  81. ENDSCAN
  82.  
  83. MXPOINTER "normal"
  84.  
  85. EXIT
  86.  
  87.  
  88.  
  89. ASC:
  90. GETBARDATA
  91. if BARDATA.SELECT == 'NONE' then do
  92.     MXREPORT "You must select some notes!"
  93.     exit
  94.     end
  95. BEGINSCAN 'selected'
  96.  
  97. if result ~= 0 then do forever        
  98.   
  99. NEXTEVENT                
  100.   if result == 0 then break
  101. Q = (127 - EVENT.ATTACK)/times
  102.  
  103. if EVENT.TYPE == 'NOTE' then 
  104. do i = 1 to times     
  105. EVENT.START.CLOCKS = EVENT.START.CLOCKS + z
  106. EVENT.STOP.CLOCKS = EVENT.STOP.CLOCKS + z
  107. EVENT.ATTACK = (EVENT.ATTACK + Q)
  108.  
  109. ADDEVENT
  110. if EVENT.START.CLOCKS > BARDATA.MEASURE then do
  111. EVENT.START.BARS = EVENT.START.BARS + 1
  112. EVENT.START.CLOCKS = EVENT.START.CLOCKS - BARDATA.MEASURE
  113. if EVENT.STOP.CLOCKS > BARDATA.MEASURE then do
  114. EVENT.STOP.BARS = EVENT.STOP.BARS + 1
  115. EVENT.STOP.CLOCKS = EVENT.STOP.CLOCKS - BARDATA.MEASURE
  116. end
  117. END
  118. end
  119. end
  120. ENDSCAN
  121.  
  122. MXPOINTER "normal"
  123.  
  124. EXIT
  125.  
  126. LEV:
  127. GETBARDATA
  128. if BARDATA.SELECT == 'NONE' then do
  129.     MXREPORT "You must select some notes!"
  130.     exit
  131.     end
  132. BEGINSCAN 'selected'
  133.  
  134. if result ~= 0 then do forever        
  135.   
  136. NEXTEVENT                
  137.   if result == 0 then break
  138.  
  139.  
  140. if EVENT.TYPE == 'NOTE' then 
  141. do i = 1 to times     
  142. EVENT.START.CLOCKS = EVENT.START.CLOCKS + z
  143. EVENT.STOP.CLOCKS = EVENT.STOP.CLOCKS + z
  144.  
  145.  
  146. ADDEVENT
  147. if EVENT.START.CLOCKS > BARDATA.MEASURE then do
  148. EVENT.START.BARS = EVENT.START.BARS + 1
  149. EVENT.START.CLOCKS = EVENT.START.CLOCKS - BARDATA.MEASURE
  150. if EVENT.STOP.CLOCKS > BARDATA.MEASURE then do
  151. EVENT.STOP.BARS = EVENT.STOP.BARS + 1
  152. EVENT.STOP.CLOCKS = EVENT.STOP.CLOCKS - BARDATA.MEASURE
  153. end
  154. END
  155. end
  156. end
  157. ENDSCAN
  158.  
  159. MXPOINTER "normal"
  160.  
  161. EXIT